import {
	IEvent,
	IMDCtrlAbility,
	IMDCtrlControllerBase,
	IMDCtrlStoreBase,
	IParam,
} from '@/core';

/**
 * 多数据部件控制器接口
 *
 * @export
 * @interface IMDCtrlController
 * @extends {ICtrlController}
 */
export interface IMDCtrlController<
	S extends IMDCtrlStoreBase,
	A extends IMDCtrlAbility
> extends IMDCtrlControllerBase<S, A> {
	/**
	 * 加载更多
	 *
	 * @memberof IListController
	 */
	loadMore(): void;

	/**
	 * 列表项单击
	 *
	 * @param {IParam} item
	 * @param {MouseEvent} event
	 * @memberof IMDCtrlController
	 */
	itemActive(item: IParam, event: MouseEvent): void;

	/**
	 *
	 * 选中数据
	 *
	 * @param {IParam[]} selections
	 * @memberof IMDCtrlController
	 */
	selectionChange(selections: IParam[]): void;

	/**
	 * 项行为点击
	 *
	 * @param {IEvent<string>} actionParam
	 * @memberof IMDCtrlController
	 */
	itemActionActive(actionParam: IEvent<string>): void;
}
